"""
@author: shaoshuai
@file :user_interface.py
@time: 2021/12/16 18:36
"""
from db import db_handler
from lib import common

# 根据不同的接口类型转入不同的日志对象
user_logger = common.get_logger(log_type='user')

# 注册接口
def register_interface(username,password,balance=15000):
    # 1) 调用db_handler，查看用户数据
    user_dic = db_handler.select(username)
    # 2) 判断user_dic 是否存在
    if user_dic:
        return False, f'用户：{username}已存在，请重新输入！！！'

    # 3) 若不存在，对数据进行保存操作
    # 3.1) 对密码进行md5加密
    password = common.get_md5_pwd(password)

    user_dic = {
        'username': username,
        'password': password,
        'balance': balance,
        # 用于记录用户流水的列表
        'flow': [],
        # 用于记录用户购物车
        'shop_car': {},
        # locked:用于记录用户是否被冻结
        # False:未冻结    True:已冻结
        'locked': False,
    }

    # 4) 保存数据
    db_handler.save(user_dic)
    msg = f'用户{username} 注册成功！'
    # 添加日志（最后一步）
    user_logger.info(msg)

    return True, msg

# 登录接口
def login_interface(username,password):
    user_dic = db_handler.select(username)
    # 进行身份校验
    if user_dic:
        # 若有冻结用户，则需要判断是否被锁定
        if user_dic.get('locked'):
            return False, '用户已冻结，请重新输入！'

        # 给输入的密码做一次加密
        password = common.get_md5_pwd(password)

        # 校验密码是否一致
        if password == user_dic.get('password'):
            msg = f'校验成功，用户{username}登陆成功！'
            user_logger.info(msg)
            return True , msg
        else:
            msg = '密码校验不成功，请重新输入！'
            return False, msg

    msg = f'用户:[{username}]不存在，请重新输入！'
    user_logger.warn(msg)
    return False, msg

# 查看余额接口
def check_balance_interface(login_user):
    user_dic = db_handler.select(login_user)

    return user_dic.get('balance')







